Managing Code Complexity in a Portable Microkernel
نویسنده
چکیده
Increasing code complexity can become a serious issue even in a software project as small as a microkernel. This paper reports on how we address this problem in the L4Ka::Pistachio microkernel. We define multiple configuration dimensions and assign code fragments to the appropriate dimensions. The kernel build system combines code fragments for the specific configuration. While this approach avoids the run-time costs of a full-blown object-oriented design, it does not avoid code duplication. To address the code duplication problem, we model the code selection with class hierarchies using multiple inheritance and polymorphism. However, the run-time overhead of virtual functions results in a serious (2x) performance hit for the time-critical kernel functionality. To address this latter problem, we apply class flattening to completely eliminate the overhead of virtual function calls. Our evaluation shows that a kernel with flattened class hierarchies performs as fast as one without class hierarchies. Thus, advanced object-oriented programming techniques need no longer be avoided in performancefocused microkernels.
منابع مشابه
Automated Object Layout Optimization in a Portable Microkernel
In a portable microkernel, the increasing diversity of target configurations can lead to software complexity problems. Insufficiencies of current kernel programming techniques manifest in excessive preprocessor use for code selection, in code duplication, and in suboptimal performance. Object-oriented programming can solve the portability problems. However, the language implementation of inheri...
متن کاملExperience with the Development of a Microkernel-Based, Multi-Server Operating System
During the first half of the 1990s IBM developed a set of operating system products called Worhplace OS that was bused on the Mach 3.0 microkernel and Taligent’s object-oriented TalOS. These products were intended to be scalable, portable and capable of concurrently running multiple operating system personalities while sharing as much code as possible. The operating system personalities were co...
متن کاملPEACE Threads Interface On Microkernel
Recently, thread libraries have become powerful entities to support parallel programming on shared memory multiprocessors and multicomputers. However, the disparity between the primitives offered by the operating systems and thread’s interface creates a challenge for those who wish to create portable threads library. The implementation of PEACE (POSIX Extensions to an Advanced Computing Environ...
متن کاملA declarative approach to extensible interface compilation
In microkernel-based operating systems, source-to-source compilers generate code to ease the process of marshaling data for communication via message passing. However, the rule of thumb for these interface compilers seems to be “simple, extensible, efficient output – pick any one”. I argue that the major cause of extensibility-limiting complexity in interface compilers comes from the sourceto-s...
متن کاملWorkplace Microkernel and Os: a Case Study Workplace Microkernel and Os: a Case Study
SUMMARY IBM's Microkernel, named Workplace OS microkernel 18], was the core component of Workplace OS, a portable successor of OS/2. The basic premise of Workplace OS work was: 1) IBM would adopt and improve the CMU Mach 3.0 microkernel for use on PDAs, the desktop, workstations, and massively parallel machines, and 2) that several operating system personalities would execute on the microkernel...
متن کامل